
// async 声明一个函数为异步函数，总是返回一个Promise(将返回值包装为Promise) 
// await 后面必须要跟一个Promise，等待其返回结果，如果返回是reject，要用try...catch...捕获，它会阻塞后面的代码执行。
// 注意此刻会先去执行await后面的函数内部，然后js再会去执行其它代码,就理解成await后面是new Promise((resolve,reject)=>{
// resolve()}

async function async1(){
    console.log('2')
    // await async2()  //进去async内部执行，就当成一个newPromise()
    const res =  await new Promise((resolve,reject)=>{
        console.log(4)
        resolve('444')
    })
    console.log(res)
    //  async2()
    console.log('3')
}
console.log('1')
async1()
setTimeout(()=>{
    console.log('0')
})
// async function async2(){
//     // setTimeout(()=>{
//         console.log('4')
//     // })
// }
console.log('5')
//1 2 5 3 4 0
// console.log('-----------------------')
// const arr = new Array()
// const fn = ()=>{}
// console.log(arr instanceof Array)
// console.log(fn instanceof Object)
// console.log(Array ==Object,Array===Object)
// console.log(Object.prototype.toString.call(fn))
